home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
B-Book Series
/
(k)b4.d64
/
validate.l
< prev
Wrap
Text File
|
2007-02-28
|
1KB
|
49 lines
0010 DIM MAX$ OF 2, D$ OF 2, M$ OF 2, Y$ OF 2
0020 DIM SURNAM$ OF 20, FORNAM$ OF 20, SEX$ OF 1, BIRTH$ OF 6
0030 OPEN FILE 2,"PERSONFILE",READ
0040 FOR REC:=1 TO 5 DO
0050 READ FILE 2: ROLL,SURNAM$,FORNAM$,SEX$,BIRTH$,HITE,CHECK
0060 IF CHECK<>0 THEN
0070 PRINT "ERROR IN RECORD NUMBER";REC
0080 ELSE
0090 NUMERIC
0100 IF DATE=FALSE THEN
0110 PRINT "NON-NUMERIC DATA OR WRONG LENGTH, RECORD";REC
0120 ELSE
0130 D$:=BIRTH$(1:2); M$:=BIRTH$(3:4); Y$:=BIRTH$(5:6)
0140 IF M$>="01" AND M$<="12" THEN
0150 MAXDAY
0160 IF D$<"01" OR D$>MAX$ THEN D$:="**"
0170 ELSE
0180 M$:="**"
0190 ENDIF
0200 IF Y$>"60" OR Y$<"30" THEN Y$:="**"
0210 ENDIF
0220 PRINT BIRTH$
0230 IF BIRTH$<>D$+M$+Y$ THEN PRINT D$+M$+Y$
0240 ENDIF
0250 ENDFOR REC
0260 CLOSE
0270 PROC NUMERIC
0280 DATE:=TRUE
0290 IF LEN(BIRTH$)<>6 THEN DATE:=FALSE
0300 FOR K:=1 TO 6 DO
0310 CH:=ORD(BIRTH$(K:K))
0320 IF CH<48 OR CH>57 THEN DATE:=FALSE
0330 ENDFOR K
0350 ENDPROC NUMERIC
0360 PROC MAXDAY
0370 MAX$:="00"
0380 IF M$ IN "04060911" THEN MAX$:="30"
0390 IF M$="02" THEN LEAPYEAR
0400 IF MAX$<"28" THEN MAX$:="31"
0410 ENDPROC MAXDAY
0420 PROC LEAPYEAR
0430 YEAR:=(ORD(Y$(1:1))-48)*10+ORD(Y$(2:2))-48
0450 IF YEAR/4=YEAR DIV 4 THEN
0460 MAX$:="29"
0470 ELSE
0480 MAX$:="28"
0490 ENDIF
0500 ENDPROC LEAPYEAR